OAuth2 হল একটি ইন্ডাস্ট্রি-স্ট্যান্ডার্ড প্রোটোকল যা সিকিউরড অথরাইজেশন মেকানিজম প্রদান করে। Spring Boot-এ OAuth2 ইন্টিগ্রেশন সহজে করা যায় Spring Security ফ্রেমওয়ার্ক ব্যবহার করে। এটি ব্যবহার করে আপনার অ্যাপ্লিকেশন থার্ড-পার্টি প্রোভাইডার (যেমন Google, GitHub, Facebook) থেকে অথেন্টিকেশন এবং অথরাইজেশন পেতে পারে।
Spring Boot অ্যাপ্লিকেশনে OAuth2 ইন্টিগ্রেশনের ধাপগুলো নিম্নরূপ:
Spring Initializer (start.spring.io) ব্যবহার করে প্রজেক্ট তৈরি করুন। নিচের ডিপেন্ডেন্সিগুলি যোগ করুন:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
</dependencies>
application.properties
বা application.yml
ফাইলে কনফিগারেশন:spring.security.oauth2.client.registration.google.client-id=YOUR_GOOGLE_CLIENT_ID
spring.security.oauth2.client.registration.google.client-secret=YOUR_GOOGLE_CLIENT_SECRET
spring.security.oauth2.client.registration.google.redirect-uri={baseUrl}/login/oauth2/code/google
spring.security.oauth2.client.registration.google.scope=openid,profile,email
spring.security.oauth2.client.registration.google.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.google.client-name=Google
spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/auth
spring.security.oauth2.client.provider.google.token-uri=https://oauth2.googleapis.com/token
spring.security.oauth2.client.provider.google.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo
spring.security.oauth2.client.provider.google.jwk-set-uri=https://www.googleapis.com/oauth2/v3/certs
spring.security.oauth2.client.provider.google.user-name-attribute=sub
উদাহরণে Google ব্যবহার করা হয়েছে। আপনি GitHub, Facebook ইত্যাদিও কনফিগার করতে পারেন।
Spring Security কনফিগারেশনে OAuth2 Login সেটআপ করতে হবে।
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/login").permitAll() // Public URL
.anyRequest().authenticated() // Secure All Other URLs
.and()
.oauth2Login() // Enable OAuth2 Login
.defaultSuccessUrl("/welcome", true); // Redirect after successful login
return http.build();
}
}
OAuth2 অথেন্টিকেশনের পরে ইউজার ডেটা রিসিভ করতে Principal
ব্যবহার করা হয়।
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class OAuth2Controller {
@GetMapping("/")
public String index() {
return "index"; // একটি সাধারণ হোম পেজ
}
@GetMapping("/welcome")
public String welcome(@AuthenticationPrincipal OAuth2User user, Model model) {
model.addAttribute("name", user.getAttribute("name"));
model.addAttribute("email", user.getAttribute("email"));
return "welcome"; // ইউজারের তথ্য দেখানোর জন্য পেজ
}
}
index.html
:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome to Spring Boot OAuth2</h1>
<a href="/oauth2/authorization/google">Login with Google</a>
</body>
</html>
welcome.html
:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome</title>
</head>
<body>
<h1>Welcome, ${name}</h1>
<p>Your email: ${email}</p>
<a href="/logout">Logout</a>
</body>
</html>
http://localhost:8080
এ যান।authorization_code
, implicit
, password
, বা client_credentials
।Spring Boot-এর মাধ্যমে OAuth2 ইন্টিগ্রেশন সহজ এবং কার্যকর। এটি আপনার অ্যাপ্লিকেশনকে সিকিউর অথেন্টিকেশন মডেলে উন্নীত করতে সহায়তা করে। যদি আপনার নির্দিষ্ট প্রয়োজন বা সমস্যার জন্য সাহায্য দরকার হয়, জানাবেন! 😊
Read more